A designer using a computer aided design (CAD) computational system will typically approach the design of a free form geometric object (such as a surface) by first specifying prominent and/or necessary subportions of the geometric object through which the object is constrained to pass. Subsequently, a process is activated for generating the geometric object that conforms to the constraining subportions provided. In particular, such subportions may be points, curves, surfaces and/or higher dimensional geometric objects. For example, a designer that designs a surface may construct and position a plurality of curves through which the intended surface must pass (each such curve also being denoted herein as a “feature line” or “feature curve”). Thus, the intended surface is, in general, expected to have geometric characteristics (such as differentiability and curvature) that, substantially, only change to the extent necessary in order to satisfy the constraints placed upon the surface by the plurality of curves. That is, the designer expects the generated surface to be what is typically referred to as “fair” by those skilled in the art. Thus, the designer typically constructs such feature curves and positions them where the intended surface is likely to change its geometric shape in a way that cannot be easily interpolated from other subportions of the surface already designed.
As a more specific example, when designing containers such as bottles, an intended exterior surface of a bottle may be initially specified by subportions such as: (a) feature curves positioned in high curvature portions of the bottle surface, and (b) surface subareas having particular geometric characteristics such as having a shape or contour upon which a bottle label can be smoothly applied. Thus, the intention of a bottle surface designer is to construct a bottle design that satisfies his/her input constraints and that is also fair. Moreover, the designer may desire to generate holes for handles, as well as, e.g., ergonomic bottle grips by deforming various portions of the bottle surface and still have the bottle surface fair.
There has heretofore, however, been no CAD system wherein a designer (or more generally, user) of geometric objects can easily and efficiently express his/her design intent by inputting constraints and having the resulting geometric object be fair. That is, the designer/user may encounter lengthy delays due to substantial computational overhead and/or the designer/user may be confronted with non-intuitive geometric object definition and deformation techniques that require substantial experience to effectively use. For example, many prior art CAD systems provide techniques for allowing surfaces to be designed and/or deformed by defining and/or manipulating designated points denoted as “control points.” However, such techniques can be computationally expensive, non-intuitive, and incapable of easily deforming more than a local area of the surface associated with such a control point. Additionally, some prior art CAD systems provide techniques for defining and/or deforming surfaces via certain individually designated control vectors. That is, the direction of these vectors may be used to define the shape or contour of an associated surface. However, a designer's intent may not easily correspond to a surface design technique using such control vectors since each of the control vectors typically corresponds to only a single point of the surface isolated from other surface points having corresponding control vectors. Thus, such techniques are, at most, only able to deform an area of the surface local to such points having corresponding control vectors.
Additionally, such prior art CAD systems may also have difficulties in precisely performing blending and trimming operations. For example, two geometric objects intended to abut one another along a common boundary may not be within a sufficient tolerance to one another at the boundary. That is, there may be sufficiently large gaps between the geometric objects that the boundary may not be considered “water tight,” which may be problematic in certain machining operations and other operations like Boolean operations on solids.
Accordingly, it would be very desirable to have a CAD system that includes one or more geometric design techniques for allowing CAD designers/users to more easily, efficiently and precisely design geometric objects. Further, it would be desirable to have such a system and/or computational techniques for graphically displaying geometric objects, wherein there is greater user control over the defining and/or deforming of computational geometric objects, and in particular, more intuitive global control over the shape or contour of computationally designed geometric objects.
Definitions
This section provides some of the fundamental definitions that are used in describing the present invention. These definitions are also illustrated in FIGS. 15 and 16.
A “parametric geometric object” S is a geometric object that is the image of a function f, wherein the domain of f is in a geometric space embedded within a coordinate system (denoted the “parameter space”) and the range of f is in another geometric space (denoted the “object space”). Typically, the inverse or pre-image, f−1, of a geometric object such as S will be a geometrically simpler object than its image in object space. For example, the pre-image of a curve 170 in object space may be a simple line segment 172, L, in parameter space. Thus if S denotes the curve in object space, then notationally f and S are sometimes identified such that for uεL, a corresponding point in the curve S is denoted S(u). Similarly, the pre-image of an undulating surface 204 (FIG. 16) in object space may be a simple bounded plane 180 in parameter space. Thus, if S denotes the undulating surface 204, then for (u,v)εf−1(S), S(u,v) denotes a corresponding point on the undulating surface 204.
A “profile” 200 (FIG. 16) is a geometric object, such as a curve in object space, through which an associated object space geometrically modeled object (e.g. surface 204) must pass. That is, such profiles 200 are used to generate the geometrically modeled object. Thus, profiles provide a common and natural way for artists and designers to geometrically design objects, in that such a designer may think in terms of the feature or profile curves when defining the characteristic shape of a geometric object (surface) being designed. For example, profile curves on a surface may substantially define the geometry of a resulting derived geometric object; e.g., its continuity, curvature, shape, boundaries, kinks, etc. Note, that for many design applications, profiles are typically continuous and differentiable. However, such constraints are not necessary. For example, a profile may, in addition to supplying a general shape or trend of the geometric object passing therethrough, also provide a texture to the surface of the geometric object. Thus, if a profile is a fractal or fractal-like, the fractal contours may be in some measure imparted to the surface of the derived geometric object adjacent the profile. Further note that it is within the scope of the present invention to utilize profiles that are of higher dimension (≧2). Thus, a profile may also be a surface or a solid. Accordingly, if a profile is a surface, then a solid having locally (i.e., adjacent to the profile) at least some of the geometric characteristics of the profile may be derived.
Moreover, profiles (and/or segments thereof) may have various computational representations such as linear (e.g., hyperplanes), elliptic, NURBS, or Bezier. Note, however, that regardless of the computational representation, a method (such as interpolation) for deforming or reshaping each profile is preferable. More particularly, it may be preferable that such a method results in the profile satisfying certain geometric constraints such as passing through (or substantially so) one or more predetermined points, being continuous, being differentiable, having a minimal curvature, etc. Further, note that such a deformation method may also include the ability to decompose a profile into subprofiles, wherein the common boundary (e.g., a point) between the subprofiles may be “slidable” along the extent of the original profile.
A “marker” 208 (FIG. 16) is a point on a profile that can be moved to change the shape of the profile 200 in a region about the marker. A marker also designates a position on a profile where the shape of a geometric object having the profile thereon can be deformed.
A “profile handle” 212 (FIG. 16) is a geometric object tangent to the profile 200. Such a profile handle may control the shape of the profile locally by modifying the slope (derivative) of the profile at the marker 208. Alternatively, for non-differentiable profiles, a profile handle may be used to control the general shape of the profile by indicating a trend direction and magnitude of the corresponding profile. For example, if the profile is a fractal or other non-differentiable geometric object, then a profile handle may, for example, provide a range within the object space to which the profile must be confined; i.e., the range may be of a tubular configuration wherein the profile is confined to the interior of the tubular configuration, Note that the profile handle 212 affects the fullness of the profile 200 (e.g., the degree of convexity deviating from a straight line between markers on the profile) by changing the length of the profile handle.
An “isocline boundary” 220 is the boundary curve opposite the profile 200 on the isocline ribbon 216. In one embodiment, at each point on the profile 200 there is a paired corresponding point on the isocline boundary 200, wherein each such pair of points defines a vector 224 (denoted a “picket”) that is typically transverse to a tangent vector at the point on the profile. More particularly, for a parameterized profile, the isocline boundary 220 can be viewed as a collection of pickets at all possible parameter values for the profile 200.
An “isocline ribbon” (or simply isocline) is a geometric object, such as a surface 216, which defines the slope of the geometric object (e.g., surface) 204 (more generally a geometric object 204) at the profile 200. Equivalently, the isocline ribbon may be considered as the representation of a geometric object delimited by the profile 200, the isocline handles 218a and 218b (discussed hereinbelow), and the isocline boundary 220. In other words, the geometric object 204 must “heel” to the isocline ribbon 216 along the profile 200. Said another way, in one embodiment, the geometric object 204 must be continuous at the isocline 216 and also be continuously differentiable across the profile 200. In an alternative embodiment, the geometric object 204 may be constrained by the isocline 216 so that the object 204 lies within a particular geometric range in a similar manner as discussed above in the description of the term “profile.” Note that there may be two isocline ribbons 216 associated with each profile 200. In particular, for a profile that is a boundary for two abutting surfaces (e.g. two abutting surfaces 204), there can be an isocline ribbon along the profile for each of the two surfaces. Thus we may speak of a right and a left hand isocline ribbon.
An “isocline handle” 228 is a geometric object (e.g., a vector) for controlling the shape of the isocline ribbon 216 at the marker 208, wherein the profile handle and isocline handle at the marker may define a plane tangent to the surface 204. Hence the isocline handle is used to determine the shape of the surface 204 (or other underlying geometric object) about the marker. In particular, an isocline handle 228 is a user manipulatible picket 224. If all the profile handles 212 and isocline handles 228 (e.g., for two or more abutting surfaces) are coplanar at a marker 208, then the surface 204 will be smooth at the marker (assuming the surface is continuously differentiable), otherwise the surface may have a crease or dart. Note that by pulling one of the handles (either isocline or profile) out of the plane of the other handles at a marker, one may intentionally generate a crease in the surface 204 along the profile 200.
The part of the profile 200 between two markers 208 is denoted a “profile segment” 232. Similarly, the part of the isocline ribbon 216 between two isocline handles 228 is denoted a ribbon segment 240.
A “boundary segment” 244 denotes the part of the boundary 220 between two isocline handles 228.
The vector 246 that is the derivative tangent to the isocline boundary 220 at an isocline handle 228 is denoted a “ribbon tangent.” Note that modifications of ribbon tangents can also be used by the present invention to control and/or modify the shape of an underlying geometric object such as surface 204.
Isocline handles 228 may be generalized to also specify curvature of the surface 204. That is, instead of straight vectors as isocline handles, the handles may be curved and denoted as “isocline ribs” 248. Thus, such ribs may facilitate preserving curvature continuity between surfaces having associated isocline ribbons along a common profile boundary, wherein the isocline ribbons are composed of isocline ribs. Accordingly, the curvature of such surfaces will match the curvature of their corresponding isocline ribs, in much the same way as they match in tangency.
A “developable surface” is a surface that can be conceptually rolled out flat without tearing or kinking. It is a special case of a “ruled surface,” this latter surface being defined by being able to lay a ruler (i.e., straight edge) at any point on the surface and find an orientation so that the ruler touches the surface along the entirety of the ruler. For a developable surface, the surface perpendiculars are all equal in direction along the ruling.
“Label surfaces” denote special 2-dimensional (developable or nearly developable) surfaces wherein a label may be applied on, e.g., a container. Label surfaces allow application of a decal without tearing or creasing. These surfaces are highly constrained and are not typically deformed by the geometric modification of an isocline ribbon 216.
A “trim profile” is a geometric object (curve) that is a profile for trimming another geometric object (e.g., a surface). The trim profile may have a single corresponding isocline ribbon 216 since if the surface to be trimmed is a label surface, it will not be modified and, accordingly, no isocline ribbon can be used to change its shape.
A trim profile (curve) can be used to delimit any surface, not just a label surface. A surface, S, that is blended along a trim profile with one or more other surfaces is called an “overbuilt surface” when the surface S overhangs the trim profile. For example, in FIG. 12, surface 130 is an overbuilt surface, wherein the portion of the surface outside of the area 134 is typically not shown to the designer once it has been trimmed away.
A convex combination of arguments Fi is a summation
      ∑    i    ⁢            c      i        ⁢          F      i      where the ci are scalar coefficients and scalar multiplication is well-defined for the Fi (e.g., Fi being vectors, functions, or differential operators), and where ci≧0 and
            ∑      i        ⁢          c      i        =  1.If the Fi are points in space, for instance, then the set of all possible such combinations yields the convex hull of the points Fi, as one skilled in the art will understand.
A “forward evaluation” is a geometric object evaluation technique, wherein in order to generate a set of sample values from a function, f(x), argument values for x are incremented and f is subsequently evaluated. This type of evaluation is usually fast and efficient, but does not give function values at chosen positions between the increments.
An “implicit function” is one written in the form f(x)=0. XεRN When a parametric curve or surface is converted to an implicit form, the conversion is called “implicitization.” Hence f(t)=(sin(t), cos(t)) in parametric form may be implicitized by f(x,y)=x2+y2−1=0. Both forms describe a circle.
Dividing a vector by its length “normalizes” it. The normalized vector then has unit length. A vector function may be divided by its gradient, which will approximate unit length, as one skilled in the art will understand.
Given a function defined by a
      ∑    i    ⁢                    p        i            ⁡              (        t        )              ⁢                  F        i            ⁡              (        t        )            where pi(t) are weighting functions, if
            ∑      i        ⁢                  p        i            ⁡              (        t        )              =  1for all values of t, then the pi are said to form a “partition of unity.”
“GI” continuity denotes herein a geometric continuity condition wherein direction vectors along a continuous parametric path on a parametrically defined geometric object are continuous, e.g., tangent vector magnitudes are not considered.